home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / ISSUE04 / TAPPLIC / LISTING7.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1995-09-26  |  1.3 KB  |  62 lines

  1. unit Unit2;
  2.  
  3. interface
  4.  
  5. uses
  6.   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  7.   Forms, Dialogs;
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.     procedure FormCreate(Sender: TObject);
  12.     procedure FormDestroy(Sender: TObject);
  13.   private
  14.     { Private declarations }
  15.     function HookProc(var Message: TMessage): boolean;
  16.   public
  17.     { Public declarations }
  18.   end;
  19.  
  20. var
  21.   Form1: TForm1;
  22.  
  23. implementation
  24.  
  25. {$R *.DFM}
  26.  
  27. procedure TForm1.FormCreate(Sender: TObject);
  28. begin
  29.   Application.HookMainWindow(HookProc);
  30. end;
  31.  
  32. procedure TForm1.FormDestroy(Sender: TObject);
  33. begin
  34.   Application.UnHookMainWindow(HookProc);
  35. end;
  36.  
  37. function TForm1.HookProc(var Message: TMessage): boolean;
  38. var
  39.   LocalFlags: word;
  40. begin
  41.   Result := false;
  42.   if Message.Msg = WM_WindowPosChanging then
  43.   begin
  44.     with TWMWindowPosMsg(Message).WindowPos^ do
  45.     begin
  46.       if (hWnd = Application.Handle) and
  47.          not IsIconic(hWnd)          and
  48.          (cx > 0) and (cy > 0)       then
  49.       begin
  50.         LocalFlags := flags or SWP_NoZOrder;
  51.         if BorderStyle = bsSizeable then
  52.           LocalFlags := LocalFlags and not SWP_NoSize
  53.         else
  54.           LocalFlags := LocalFlags or SWP_NoSize;
  55.         SetWindowPos(Self.Handle, 0, x, y, cx, cy, LocalFlags);
  56.       end;
  57.     end;
  58.   end;
  59. end;
  60.  
  61. end.
  62.